import math
금융공학프로그래밍3, Quiz1
1. Calculate the following
(1) 근의 공식 코드 작성
=2.0;b=-1.0;c=-15.0;
aprint(
-b+math.sqrt(b**2-4*a*c))/(2*a),
(-b-math.sqrt(b**2-4*a*c))/(2*a)
( )
3.0 -2.5
(2) 정규분포 확률밀도함수 코드 작성
=2; std=math.sqrt(3); x=1;
meanprint(
1/(math.sqrt(2*math.pi)*std))*(math.e**(-((x-mean)**2)/(2*(std)**2)))
( )
0.19496965572274114
2. Why the error occurs?
(1) Input error
=input("enter a number:")
a
+3 a
input 값은 string타입으로 받게되므로, integer타입인 3과 더하기 연산을 하면 오류 발생, input 값을 받아 integer로 변환하여 integer간 연산을 하거나, 3을 string으로 변환하여 문자열간 연산을 하거나 해야함.
(2) Range error
='My String'
tmp10] tmp[
tmp는 공백포함 9자리 문자열이므로 index는 0~8까지만 할 수 있고 9부터는 범위 밖이므로 오류 발생.
(3) method error
='sample string'
ex1=ex1.upper
ex24] ex2[:
method를 사용할 때, 뒤에 ()를 붙여야 작동함. 붙이지 않을경우 단순히 함수를 호출하는 것.
3. String
='ABCDF' grade
(1) ‘+’를 이용해서 ’ABCDFFFDCBA’ 만들기
=grade+grade[-1]+grade[::-1]
grade_str grade_str
'ABCDFFFDCBA'
(2) A의 개수
'A') grade_str.count(
2
(3) ’FFF’를 반환하는 4가지 다른 표현식
print(
4:7],
grade_str[6:3:-1],
grade_str[-7:-4],
grade_str[-5:-8:-1]
grade_str[ )
FFF FFF FFF FFF
(4) ’ABCDAAADCBA’로 수정하기
=grade_str.replace('F','A')
grade_str grade_str
'ABCDAAADCBA'
(5) 소문자로 모두 바꾸기
=grade_str.lower()
grade_str grade_str
'abcdaaadcba'
4. Why the error occurs?
(1) slicing 반환 형식
=[[1,3,5,7,9],[2,4,6,8,10]]
L0][1:2]=30 L[
list를 원소로 가지는 list에서 slicing하는 경우, output은 list로 나타나게 되는데, list에 integer 30을 할당하려고 하므로 오류가 발생함.
30을 list로 만들어 할당하거나, slicing 대신 indexing을 통해 output을 integer로 만드는 방법을 사용해야 함.
(2) 단일 원소 tuple 표현
=(10,20,30)
T2]+(40) T[:
tuple에 더하기를 사용하는 경우인데, (40)은 tuple이 아니라 integer이므로 오류가 발생함. 단일 원소를 가지는 tuple을 표현하려면 (40,)으로 써야함.
(3) 변수 할당 labeling vs. copy
=dict(A=10,B=20,C=30)
D# Copy method를 써야 복사본이 할당됨
# D2=D.copy()
=D
D2del D2['A']
'A'] D[
D2=D는 D2에 D.copy가 할당되는게 아니라 단순히 D에 D2라는 label만 새로 달아준것임. 따라서, D2에 ‘A’ key를 제거하면 D의 ‘A’ key도 사라지게 되므로 호출시 오류 발생.
(4) Key값은 Immutable 해야함
={['Park','Male']:30,} D3
Dictionary 타입의 key값은 immutable한 값만 허용되므로 mutable한 list를 사용하면 오류 발생. tuple을 쓰던지 해야함.
(5) slicing&indexing for Dict
={(1,):10,(2,):20,(3,):30,(4,):40}
dict_y1,)] dict_y[(
Dictionary은 순서가 없음. slicing이 불가하며 indexing도 key값으로만 접근 가능.
5. List
=['Mon','Tues','Wed','Thur','Fri',['Sat','Sun']] days
(1) indexing, slicing
print(
5]],
[days[-1::-2],
days[5][0],
days[='\n'
sep )
[['Sat', 'Sun']]
[['Sat', 'Sun'], 'Thur', 'Tues']
Sat
(2) ‘+’ 활용
=[days[0:5]]+days[5][0:1]+days[5][1:]
days2 days2
[['Mon', 'Tues', 'Wed', 'Thur', 'Fri'], 'Sat', 'Sun']
(3) remove method
0].remove('Wed')
days2[0].remove('Fri')
days2[ days2
[['Mon', 'Tues', 'Thur'], 'Sat', 'Sun']
(4) insert method
0].insert(2,'W')
days2[ days2
[['Mon', 'Tues', 'W', 'Thur'], 'Sat', 'Sun']
6. list2
=[1,5,2,7,3,6,4] Nums
(1) append method
7)
Nums.append( Nums
[1, 5, 2, 7, 3, 6, 4, 7]
(2) sorting list
Nums.sort()
Nums.reverse() Nums
[7, 7, 6, 5, 4, 3, 2, 1]
(3) slicing and replacing
2]=['a','a','a','a']
Nums[:: Nums
['a', 7, 'a', 5, 'a', 3, 'a', 1]
7. tuple
=(180,130,110,160,140,170) price
(1) sorting tuple via translate to list
=list(price)
price_list
price_list.sort()=tuple(price_list)
price price
(110, 130, 140, 160, 170, 180)
(2) basic operation
170 in price
True
(3) concatenating tuple
=price[0:4]+(0,)*3+price[len(price)-1:]
price price
(110, 130, 140, 160, 0, 0, 0, 180)